type: object
properties:
  connection:
    description: |
      Параметры подключения к API cloud-провайдера.
    properties:
      authURL:
        description: |
          OpenStack Identity API URL.
      caCert:
        description: |
          CA x509 сертификат в PEM формате, использовавшийся для подписи (можно указать, если OpenStack API имеет самоподписанный сертификат).
      domainName:
        description: |
          Имя домена.
      tenantName:
        description: |
          Имя проекта.

          Не может использоваться вместе с `tenantID`.
      tenantID:
        description: |
          ID проекта.

          Не может использоваться вместе с `tenantName`.
      username:
        description: |
          Имя пользователя с полными правами на проект.
      password:
        description: |
          Пароль пользователя.
      region:
        description: |
          Регион OpenStack, где будет развернут кластер.
  internalNetworkNames:
    description: |
      Имена сетей, подключенные к виртуальной машине и используемые `cloud-controller-manager` для проставления InternalIP в `.status.addresses` в Node API объект.
  externalNetworkNames:
    description: |
      Имена сетей, подключенные к виртуальной машине и используемые `cloud-controller-manager` для проставления ExternalIP в `.status.addresses` в Node API объект.
  additionalExternalNetworkNames:
    description: |
      Имена дополнительных сетей, которые могут быть подключены к виртуальной машине и использованы в `cloud-controller-manager` для проставления `ExternalIP` в `.status.addresses` в Node API объект.

      Если в кластере есть инстансы, для которых будут использоваться External Networks, отличные от указанных в схеме размещения, их следует передавать в параметре `additionalExternalNetworkNames`.
  ignoreVolumeMicroversion:
    type: boolean
    description: |
      Настройка для обратной совместимости. Включите, если версия OpenStack в облаке меньше 3.34 и вы получаете ошибку «Version 3.34 is not supported by the API. Minimum is 3.0 and maximum is 3.x» при заказе PV. Это отключит изменения размеров томов «на лету», но вернет возможность заказа новых PV. (оригинальный PR https://github.com/kubernetes/cloud-provider-openstack/pull/1986/)
  podNetworkMode:
    description: |
      Способ организации трафика в той сети, которая используется для коммуникации между подами (обычно это internal-сеть, но бывают исключения):
        * `DirectRouting` – между узлами работает прямая маршрутизация.
        * `DirectRoutingWithPortSecurityEnabled` — между узлами работает прямая маршрутизация, но только если в OpenStack явно разрешить на портах диапазон адресов, используемых во внутренней сети:
          * **Внимание!** Убедитесь, что у `username` есть доступ на редактирование AllowedAddressPairs на портах, подключенных в сеть `internalNetworkName`. Обычно в OpenStack такого доступа нет, если сеть имеет флаг `shared`.
        * `VXLAN` – между узлами **НЕ** работает прямая маршрутизация, необходимо использовать VXLAN.
  instances:
    description: |
      Параметры инстансов, которые используются при создании виртуальных машин.
    properties:
      sshKeyPairName:
        description: |
          Имя OpenStack ресурса `keypair`, который будет использоваться при заказе инстансов.
      securityGroups:
        description: |
          Список securityGroups, которые нужно прикрепить к заказанным инстансам. Используется для задания firewall-правил по отношению к заказываемым инстансам.
      imageName:
        description: |
          Имя образа.
      mainNetwork:
        description: |
          Путь до сети, которая будет подключена к виртуальной машине как основная сеть (шлюз по умолчанию).
      additionalNetworks:
        description: |
          Список сетей, которые будут подключены к инстансу.
  loadBalancer:
    description: |
      Параметры Load Balancer'а.
    properties:
      subnetID:
        description: |
          ID подсети Neutron, в которой необходимо создать load balancer virtual IP.
      floatingNetworkID:
        description: |
          ID external network, который будет использоваться для заказа Floating IP.
  zones:
    description: |
      Список зон по умолчанию для заказа инстансов. Может быть переопределен индивидуально для каждой NodeGroup.
  tags:
    description: |
      Словарь тегов, которые будут на всех заказываемых инстансах.
  storageClass:
    description: |
      Автоматическое создание StorageClass'ов, которые есть в OpenStack.
    properties:
      exclude:
        description: |
          Полные имена (или regex выражения имен) StorageClass'ов, которые не будут созданы в кластере.
      default:
        description: |
          Имя StorageClass'а, который будет использоваться в кластере по умолчанию.

          Если параметр не задан, фактическим StorageClass'ом по умолчанию будет:
            * присутствующий в кластере произвольный StorageClass с default-аннотацией;
            * первый StorageClass из создаваемых модулем (в порядке из OpenStack).
      topologyEnabled:
        description: |
          Этот параметр управляет функционалом драйвера, который определяет необходимость учета ограничения топологии облака при заказе дисков. Это учитывается только при создании дисков, существующие PersistentVolume'ы не будут изменены.

          > **Внимание!** Если установлено значение `false`, все новые PersistentVolume'ы создаются без учета ограничений топологии.
